package com.taxis.action;

import java.util.List;

import org.apache.struts2.ServletActionContext;
import com.taxis.model.Taxista;
import com.taxis.model.Unidad;
import com.taxis.service.TaxistaDaoService;
import com.taxis.service.UnidadDaoService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class TaxistaAction extends ActionSupport {

	private TaxistaDaoService taxistaService = new TaxistaDaoService();
	private UnidadDaoService unidadService = new UnidadDaoService();
	private Taxista taxista;
	private List<Taxista> taxistas;
	private List<Unidad> unidades;
	private Integer idUnidad;
	private Integer idTaxista;

	public Taxista getTaxista() {
		return taxista;
	}

	public void setTaxista(Taxista taxista) {
		this.taxista = taxista;
	}

	public List<Taxista> getTaxistas() {
		return taxistas;
	}

	public String save() throws Exception {
		if (taxista.getIdTaxista() == null) {
			taxistaService.insertTaxista(taxista);
		} else {
			taxistaService.updateTaxista(taxista);
		}
		return SUCCESS;
	}

	public String view() throws Exception{
		taxistas = taxistaService.getAllTaxistas();
		return SUCCESS;
	}

	public String edit() throws Exception{
		taxista = taxistaService.getTaxista(taxista.getIdTaxista());
		return SUCCESS;
	}

	public String delete() throws Exception {
		taxistaService.deleteTaxista(taxista.getIdTaxista());
		return SUCCESS;
	}
	
	public String viewActivos() throws Exception{
		TaxistaDaoService taxistaService = new TaxistaDaoService();
		taxistas = taxistaService.findByEstado("NoServicio");
		return SUCCESS;
		
	}
	
	public String mostrarUnidades() throws Exception{
		TaxistaDaoService taxistaService = new TaxistaDaoService();
		taxista = taxistaService.getTaxista(taxista.getIdTaxista());
		UnidadDaoService unidadService = new UnidadDaoService();
		setUnidades(unidadService.getAllUnidades());
		return SUCCESS;
	}
	 
	public String asignar() throws Exception{	
		int id = Integer.parseInt(ServletActionContext.getRequest().getParameter("idTaxista"));
		int idu = Integer.parseInt(ServletActionContext.getRequest().getParameter("unidad.idUnidad"));
		taxista = taxistaService.getTaxista(id);
		Unidad unidad = unidadService.getUnidad(idu); 
		taxista.setUnidad(unidad);
		taxistaService.updateTaxista(taxista);
		return SUCCESS;
		
	}
	
	public String newTaxista() throws Exception{
		UnidadDaoService unidadService = new UnidadDaoService();
		setUnidades(unidadService.getAllUnidades());
		return SUCCESS;
	}
	
	public String input() throws Exception {
		ServletActionContext.getRequest().setAttribute("unidades",unidadService.getAllUnidades());
		return INPUT;
	}

	public void setUnidades(List<Unidad> unidades) {
		this.unidades = unidades;
	}

	public List<Unidad> getUnidades() {
		return unidades;
	}

	private void setIdUnidad(Integer idUnidad) {
		this.idUnidad = idUnidad;
	}

	private Integer getIdUnidad() {
		return idUnidad;
	}

	private void setIdTaxista(Integer idTaxista) {
		this.idTaxista = idTaxista;
	}

	private Integer getIdTaxista() {
		return idTaxista;
	}
	
	public String localize() throws Exception{
		int idtax = Integer.parseInt(ServletActionContext.getRequest().getParameter("idTaxista"));
		taxista = taxistaService.getTaxista(idtax);
		return SUCCESS;
	}
}